/**
 * Created by 陈文豪 on 2017/09/11.
 * @description 此模块专门用于存放商品后台接口模型
 * 与swagger ui一样分为几大模块每个module在个子的模块下书写;
 */
import {GoodsOrderDetailRespVO} from "@interface/index";

/**
 * @description 商品modal
 */
export class GoodsRespVO {
  attributeList: Array<GoodsAttributeRespVO>; // : 商品属性列表 ,
  baseInfoList: Array<GoodsFieldRespVO>; // : 基本信息列表 ,
  bizId: number; // : 业务ID，比如赛事、培训等 ,
  brandCode: string; // : 品牌编码 ,
  brandName: string; // : 品牌名称 ,
  createTime: string; // : 创建时间 ,
  descApp: string; // : 移动端描述 ,
  extInfoList: Array<GoodsFieldRespVO[]>; // : 拓展信息列表 ,
  goodsCateCode: string; // : 商品类别编码 ,
  goodsCateCode1: string; // : 一级商品类别 ,
  goodsCateName: string; // : 商品类别名称 ,
  goodsCateName1: string; // : 一级商品类别名称 ,
  goodsCode: string; // : 商品编码 ,
  goodsFullName: string; // : 商品完整名称 ,
  goodsName: string; // : 商品名称 ,
  imgList: Array<GoodsImgRespVO>; // : 图片列表 ,
  maxSalePrice: number; // : 最高销售价格 ,
  minSalePrice: number; // : 最低销售价格 ,
  publishTime: string; // : 发布时间 ,
  remarks: string; // : 备注 ,
  skuList: Array<GoodsSkuRespVO>; // : 商品sku列表 ,
  status: number; // : 商品状态（0 上架， 1 下架，2 草稿，3 审核中待上架） ,
  thirdPatternIconUrl: string; // : 第三方头像url ,
  thirdPatternId: string; // : 第三方ID（创建用户ID） ,
  thirdPatternNickname: string; // : 第三方昵称（创建用户昵称） ,
  totalStock: number; // : 总库存 ,
  updateTime: string; // : 修改时间
  isFavorite: number; // 是否收藏（0：否，1：是） ,
}

export class GoodsAttributeRespVO {
  attrCode: string; // : 属性编码 ,
  attrName: string; // : 属性名 ,
  attrType: number; // : 属性类型（1 基本属性，2 销售属性） ,
  attrUnit: string; // : 属性单位 ,
  attributeValueList: Array<GoodsAttributeValueRespVO>; // : 商品属性值列表 ,
  isRequired: number; // : 是否必填项（ 0否，1是） ,
  remarks: string; // : 备注 ,
  showPattern: number; // : 展示模式（1下拉方式，2多选框，3日期控件，4输入框）
  attrValueName:string;
}

export class GoodsFieldRespVO {
  custom: number; // : 是否是用户自定义的属性（0非自定义，1自定义） ,
  name: string; // : 字段名 ,
  nameText: string; // : 字段名的描述 ,
  valueTexts: Array<string>; // : 字段的文本值 ,
  valueType: number; // : 值类型（1下拉方式，2多选框，3日期控件，4地址（省市详细）,5多个值字段 ,
  values: Array<string>; // : 字段值
}

export class GoodsImgRespVO {
  goodsImgUrl: string; // : 商品图片URL ,
  goodsLargeUrl: string; // : 商品大图片URL_720x0 ,
  goodsMiddleUrl: string; // : 商品中等图片URL_360x0 ,
  goodsThumbUrl: string; // : 商品缩略图片URL_180x0 ,
  sortValue: number; // : 排序值
}

export class GoodsSkuRespVO {
  attrCodeList: Array<string>; // : 属性编码列表 ,
  buyStatus: number; // 购买状态 （0：不能购买，1：可购买） ,
  buyTimesLimit: number; // : 限购次数 ,
  price: number; // : 价格，单位为分 ,
  salePrice: number; // : 实际销售价格，单位为分 ,
  skuCode: string; // : sku编码 ,
  status: number; // : 状态（0：无效，1：有效） ,
  stock: number; // : 库存
}

export class GoodsAttributeValueRespVO {
  attrCode: string; // : 属性编码 ,
  attrValue: string; // : 属性值 ,
  attrValueName: string; // : 属性值名称 ,
  sortValue: number; // : 排序值
}

export class GoodsOrderRespVO {
  address: string; // : 收货地址 ,
  addressId: number; // : 收货地址Id ,
  attach: string; // : 扩展参数 ,
  buyerName: string; // : 买家名称 ,
  buyerUserId: string; // : 买家id ,
  createDate: string; // : 创建时间 ,
  createDateStr: string; // : 创建时间 ,
  deliveryTime: string; // : 配送时间 ,
  details: Array<GoodsOrderDetailRespVO>; // : 明细列表 ,
  finishTime: string; // : 完成时间 ,
  finishTimeStr: string; // : 完成时间 ,
  gateway: string; // : 交易网关 ,
  gatewayName: string; // : 交易网关名称 ,
  groups: Array<GoodsOrderGroupRespVO>; // : 分组列表 ,
  id: number; // : 订单ID ,
  orderNumber: string; // : 订单编号 ,
  phone: string; // : 联系电话 ,
  receiptUserName: string; // : 买家收货称呼 ,
  remarks: string; // : 描述 ,
  status: number; // : 订单状态 1: 待支付，2: 已支付，3: 支付失败，4: 已完成，5: 已关闭，6: 退款中，7: 已退货，9：预下单成功 ,
  timeExpire: string; // : 超时时间 ,
  timeExpireSecond: number; // 过期时间（秒）
  total: number; // : 总价 ,
  totalQuantity: number; // : 总数量 ,
  tradeTime: string; // : 交易时间 ,
  tradeTimeStr: string; // : 交易时间 ,
  transactionNumber: string; // : 交易号 ,
  transactionPrice: number; // : 交易金额 ,
  userStatus: number; // : 第三方状态（31001：待完善信息,31002：请等待系统摇号，中签后即可进行支付,31003：请等待系统摇号，中签后即可参加赛事） ,
  userStatusMessage: string; // : 第三方状态描述 ,
  vendorIconUrl: string; // : 卖家头像url ,
  vendorNickname: string; // : 卖家昵称 ,
  vendorUserId: string; // : 卖家id
   //  以下是 接口返回的错误码里包含的错误信息
  maxTeamMember?: number;  // 最大购买数量
  minTeamMember?: number;  // 最少购买数量
}

export class GoodsOrderGroupRespVO {
  details: Array<GoodsOrderDetailRespVO>; // : 明细列表 ,
  total: number; // : 总价 ,
  totalQuantity: number; // : 总数量 ,
  vendorIconUrl: string; // : 卖家头像url ,
  vendorNickname: string; // : 卖家昵称 ,
  vendorUserId: string; // : 卖家id
}

export class GoodsSkuOrderVO {
  goodsCateCode: string; // : 商品类别编码 ,
  goodsCateCode1: string; // : 一级商品类别 ,
  goodsCode: string; // : 商品编码 ,
  goodsFullName: string; // : 商品完整名称 ,
  goodsName: string; // : 商品名称 ,
  imgList: Array<GoodsImgVO>; // : 图片列表 ,
  price: number; // : 价格 ,
  salePrice: number; // : 实际销售价格 ,
  preferentialPrice: number; // 砍价价格
  shopName: number; // : 店铺名称 ,
  skuCode: string; // : SKU code
  thirdPatternIconUrl: string; // : 第三方头像url ,
  thirdPatternNickname: string; // : 第三方昵称（创建用户昵称）
}

export class GoodsImgVO {
  createTime: string; // : 创建时间 ,
  goodsCode: string; // : 商品CODE ,
  goodsImgUrl: string; // : 商品图片URL ,
  goodsLargeUrl: string; // : 商品大图片URL_720x0 ,
  goodsMiddleUrl: string; // : 商品中等图片URL_360x0 ,
  goodsThumbUrl: string; // : 商品缩略图片URL_180x0 ,
  id: number; // : 商品图片id ,
  order: string; // ,
  remarks: string; // : 备注 ,
  sort: string; // ,
  sortValue: number; // : 排序值 ,
  updateTime: string; // : 修改时间
}

export class MerchandiseVO {
  bizId: number; // : 赛事id ,
  deviceType: string; // : 平台类型 ,
  goodsBizUrl: string; // : 跳转URL ,
  goodsCateCode: string; // : 顶级类目 ,
  goodsCateCode1: string; // : 子级类目 ,
  goodsCode: string; // : 商品Code ,
  goodsType: string; // : 赛事组别 ,
  orderNumber: string; // : 订单编号 ,
  skuCode: string; // : 商品SUK码 ,
  templateType: number; // ,
}

export class GoodsResp {
  attributeMappingList: Array<GoodsAttributeMappingVO>; // : 商品属性对应列表 ,
  bizId: number; // : 业务ID ,
  brandCode: string; // : 品牌 ,
  buyTimesLimit: number; // : 购买次数 ,
  checkOpinion: string; // : 审核意见 ,
  checkStatus: number; // : 审核状态（0：审核中，1：审核通过，2：审核不通过） ,
  createTime: string; // : 创建时间 ,
  deleteFlag: string; // : 删除标识 N 否，Y是 ,
  ext: string; // : 扩展字段，根据分类获得值 ,
  formType: number; // : 商品形态（0 虚拟商品 1 真实商品） ,
  goodsCateCode: string; // : 商品类别CODE ,
  goodsCateName: string; // : 商品类别名称 ,
  goodsCode: string; // : 商品CODE ,
  goodsExtInfo: string; // : 拓展信息JSON穿 ,
  goodsFullName: string; // : 商品完整名称 ,
  goodsLowestPrice: number; // : 商品最低价格 ,
  goodsName: string; // : 商品名称 ,
  goodsPrice: number; // : 商品价格 ,
  goodsSalePrice: number; // : 销售价格 ,
  goodsSkuList: Array<GoodsSkuVO>; // : 商品SKU对应列表 ,
  goodsStock: number; // : 商品库存量 ,
  goodsUnit: string; // : 单位 ,
  id: number; // : 商品id ,
  imgList: Array<GoodsImgVO>; // : 图片列表 ,
  order: string; // ,
  publishTime: string; // : 发布时间 ,
  remarks: string; // : 备注 ,
  sort: string; // ,
  status: number; // : 状态码（0 上架 1下架） ,
  thirdPatternId: string; // : 第三方ID ,
  updateTime: string; // : 修改时间
}

export class GoodsFilterResp {
  attributeList: Array<GoodsAttributeVO>; // 商品属性 ,
  brandList: Array<GoodsBrand>; //  商品品牌 ,
  categoryList: Array<GoodsCategory>; //  商品分类
}

export class GoodsAttributeVO {
  attrCode: string; // 属性CODE ,
  attrName: string; // 属性名 ,
  attrType: number; // 属性类型 1 基本属性，2 销售属 ,
  attrUnit: string; // 属性单位 ,
  attrValue: string; // 属性值 ,
  cateCode: string; // 类别CODE ,
  cateCodeName: string; // 类别中文名称 ,
  childList: Array<GoodsAttributeVO>; //  子属性 ,
  childrenNames: string; // 子类名称 ,
  childrenValues: string; // 子类属性值 ,
  childrencode: string; // 子类codes ,
  createTime: string; // 创建时间 ,
  deleteFlag: string; // 删除标识 N否 Y是 ,
  id: number; // 商品属性id ,
  isRequired: number; // 是否必填项 0否 1是 ,
  parentAttrCode: string; // 父级属性CODE ,
  parentAttrNames: string; // 父级属性Names ,
  remarks: string; // 备注 ,
  showModel: number; // 展示模式(1 下拉方式 2 多选框) ,
  sortValue: number; // 排序值 ,
  updateTime: string; // 修改时间
}

export class GoodsBrand {
  brandCode: string; // ,
  brandId: number; // ,
  brandInitial: string; // ,
  brandLogo: string; // ,
  brandName: string; // ,
  cateCode: string; // ,
  createTime: string; // ,
  displayMode: number; // ,
  remarks: string; // ,
  sortValue: number; // ,
  status: number; // ,
  updateTime: string; // ,
}
export class GoodsCategory {
  cateCode: string; // 分类CODE ,
  cateName: string; // 分类名称 ,
  createTime: string; // 创建时间 ,
  deleteFlag: string; // 删除标识 N 否，Y是 ,
  id: number; // 商品分类id ,
  order: string; // ,
  parentCateCode: string; // 父级分类CODE ,
  remarks: string; // 备注 ,
  sort: string; // ,
  sortValue: number; // 排序 ,
  updateTime: string; // 修改时间
}

export class GoodsAttributeMappingVO {
  attrCode: string; // : 属性CODE ,
  attrName: string; // : 属性名 ,
  attrType: number; // : 属性类型 1 基本属性，2 销售属 ,
  attrUnit: string; // : 属性单位 ,
  attrValue: string; // : 属性值 ,
  cateCode: string; // : 类别CODE ,
  childAttributeList: Array<GoodsAttributeMappingVO>;
  createTime: string; // : 创建时间 ,
  goodsCode: string; // : 商品CODE ,
  id: number; // : 商品属性对应id ,
  isRequired: number; // : 是否必填项 0否 1是 ,
  order: string; // ,
  parentAttrCode: string; // : 父级属性CODE ,
  parentAttrName: string; // : 父属性名 ,
  remarks: string; // : 备注 ,
  showPattern: number; // : 展示模式(1 下拉方式 2 多选框) ,
  sort: string; // ,
  sortValue: number; // : 排序值 ,
  updateTime: string; // : 修改时间
}

export class GoodsSkuVO {
  attrCodeList: Array<string[]>; // : SKU属性编码列表 ,
  buyTimesLimit: number; // : 限购次数 ,数据0不能限购
  goodsCode: string; // : 商品编码 ,
  id: number; // ,
  price: number; // : 价格 ,
  salePrice: number; // : 实际销售价格 ,
  skuCode: string; // : SKU code ,
  skuItemList: Array<GoodsSkuItem>; // : SKU属性选项列表 ,
  status: number; // : 0：无效，1：有效 ,
  stock: number; // : 库存 ,
  unit: string; // : 单位
  buyBeginTime: string; // 购买开始时间
  buyEndTime: string; // 购买结束时间
  buyStatus: number; // 购买状态0：无效（不能购买），1：有效（可购买）

}

export class GoodsSkuItem {
  attrCode: string; // : 属性编码 ,
  id: number; // : id ,
  skuCode: string; // : sku编码
}

 //  用户联系人列表item
export class UserContactPersonVO {
  address ?: number;  //  详细地址 ,
  city ?: string;  //  市 ,
  cityName ?: number;  //  市名称 ,
  clothingSize ?: string;  //  衣服尺码 ,
  clothingSizeName ?: number;  //  衣服尺码名称 ,
  commingName ?: number;  //  姓名1:男 2:女 ,
  createTime ?: number;  //  创建时间 ,
  dist ?: string;  //  区 ,
  distName ?: number;  //  区名称 ,
  emerContact ?: number;  //  紧急联系人姓名 ,
  emerPhone ?: number;  //  紧急联系人手机号码 ,
  id ?: string;  //  主键标识 ,
  idNo ?: number;  //  证件号 ,
  idType ?: string;  //  证件类型 ,
  isDelete ?: string;  //  删除标识 0:正常 1:已删除 ,
  latitude ?: string;  //  纬度 ,
  linkPhone ?: number;  //  手机号码 ,
  longitude ?: string;  //  经度 ,
  order ?: number;  // ,
  prov ?: string;  //  省 ,
  provName ?: number;  //  省名称 ,
  sex ?: string;  //  性别 ,
  sort ?: number;  // ,
  updateTime ?: number;  //  更新时间 ,
  userId ?: number;  //  用户ID
}

// 商品优惠券列表
export class CanReceiveCouponRespVO {
  batchId: number; // 批次号id ,
  codeId: number; // 优惠券码ID ,
  couponName: string; // 优惠券名称 ,
  couponStatus: number; // 优惠券批次状态（1：初始化，2：已发布，3：已领完，4：已过期，5：已作废） ,
  couponValue: number; // 优惠券面值（单位为分） ,
  description: string; // 优惠券描述 ,
  deviceType: string; // 适用平台（1：PC，2：android，3：iOS，4：H5），可多选，多个用逗号分隔，“1,2,3,4”代表全平台 ,
  endTime: string; // 有效期结束时间 ,
  startTime: string; // 有效期开始时间 ,
  tag: number; // 标签（1：未使用，2：已使用，4：已过期，5：已作废，6：最新，7：将过期） ,
  useCondition: number; // 使用条件（1：无门槛，2：满XX元可用） ,
  useScope: number; // 使用范围（1：全场通用，2：指定商品，3：指定分类） ,
  useStatus: number; // 是否领用优惠券（0：未领用，1：已领用） ,
  useValue: number; // 满XX金额（单位为分）
}

// 领取优惠券
export class ReceiveCouponRespVO {
  batchId: number; // 批次号id
}



// 可用优惠券列表
export class CouponRespVO {
  codeId: number; // 优惠券码ID ,
  codeStatus: number; // 优惠券码状态（1：未使用，2：已使用，3：已过期，4：已作废） ,
  couponName: string; // 优惠券名称 ,
  couponValue: number; // 优惠券面值（单位为分） ,
  description: string; // 优惠券描述 ,
  deviceType: string; // 适用平台（1：PC，2：android，3：iOS，4：H5），可多选，多个用逗号分隔，“1,2,3,4”代表全平台 ,
  endTime: string; // 有效期结束时间 ,
  startTime: string; // 有效期开始时间 ,
  tag: number; // 标签（1：未使用，2：已使用，4：已过期，5：已作废，6：最新，7：将过期） ,
  useCondition: number; // 使用条件（1：无门槛，2：满XX元可用） ,
  useScope: number; // 使用范围（1：全场通用，2：指定商品，3：指定分类） ,
  useValue: number; // 满XX金额（单位为分）
}
// 票务列表
export class TicketDetailVO {
    address: Array<string[]>; // 地点
    cateName: string; // 类别名称
    code: string; // CODE
    description: string; // 富文本描述
    endDateTime: string; // 赛事结束时间
    favorited: boolean; //  是否收藏
    favoritedCount: number; //  收藏次数
    imgList: Array<GoodsImgVO>; // 图片列表
    maxPrice: number; // 最高价格
    minPrice: number; // 最低价格
    name: string; // 名称
    needIdNo: boolean; // 是否需要身份证
    obtainTypes: Array<string[]>; // 取票方式
    sellerHeadImg: string; // 商家头像
    sellerName: string; // 商家名称
    skuList: Array<GoodsSkuVO>; // SKU列表
    startDateTime: string; // 赛事开始时间
    status: number; // 状态码（1-已下架 2-销售中 3-预热中 4-已售罄）
}
export class TicketSkuDetailVO {
    buyBeginTime: string; // 购买开始时间
    buyEndTime: string; // 购买结束时间
    buyStatus: number; // 购买状态 0：无效(不能购买)，1：有效(可购买)
    buyTimesLimit: number; // 限购次数，数据为0不限购
    marketPrice: number; // 市场价格
    price: number; // 价格
    skuCode: string; // skuCode
    stock: number; // 库存
    unit: string; // 单位
    nextStepId: number; // 下一步骤id ,
    ticket: TicketDetailVO;
    nextStepUrl: string; //  下一步地址 ,
}

 export class RegisterCardDetailVO {
     cardImgUrl: string; // 服务卡图片
     cardNo: string; // 卡号 ,
    completedDateTime: string; // 完成时间 ,
    count: number; // 数量 ,
    endDateTime: string; // 结束时间 ,
    goodsUnit: string; // 单位 ,
    name: string; // 名称 ,
    orderNo: string; // 订单号 ,
    startDateTime: string; // 开始时间 ,
    status: number; // 状态:1-未激活;2-可使用;3-已完成;4-不可用;5-已终止;6-已冻结 ,
    ticketDetailVO: Array<TicketDetailVO>;
    obtainType: string; // 取票方式
    showExpress: boolean; //  是否显示物流信息
}

export class  LogisticsInfoRespVO  {
  com: string; // 公司 ,
  comName: string; // 公司名
  datas: Array<LogisticsDataRespVO>; //  数据列表
  goodsImg: string; //  商品图片 ,
  goodsQuantity: number; // 商品数量 ,
  no: string; //  单号 ,
  status: string; //  状态（0：在途,1：揽件，2：疑难，3： 签收 ，4：退签 ，5：派件 ，6：退回）
}
export class LogisticsDataRespVO {
  status: string; // 状态
  time: string; // 时间
}
